package main

import (
	"encoding/json"
	"log"

	"jlpay-sdk-go/pkg/jlpay/demo"
	"jlpay-sdk-go/pkg/jlpay/models/openmerch/query"
	query2 "jlpay-sdk-go/pkg/jlpay/services/openmerch/query"
	"jlpay-sdk-go/pkg/jlpay/utils"
)

// 商户基本信息查询示例
func merchBaseInfoQueryDemo(queryService *query2.QueryService) {
	// 构建请求参数
	requestData := map[string]interface{}{
		"merch_no": "849584358140108",
	}

	request := query.NewMerchBaseInfoQueryRequest()
	request.SetRawRequestMap(requestData)

	// 序列化请求数据并打印
	requestJSON, _ := json.Marshal(requestData)
	utils.Debugf("商户基本信息查询请求数据: %s", string(requestJSON))

	// 发送请求
	response, err := queryService.QueryMerchBaseInfo(request)
	if err != nil {
		utils.Errorf("商户基本信息查询请求失败: %v", err)
		return
	}

	// 处理响应 - 使用原有的HandleResponse方法
	response.HandleResponse("商户基本信息查询")

	// 打印解密后的完整响应结构体
	if response.IsSuccess() {
		log.Println("=== 解密后的响应数据 ===")
		responseJSON, _ := json.MarshalIndent(response, "", "  ")
		log.Printf("响应结构体（已解密）：\n%s", string(responseJSON))
	}
}

func main() {
	// 设置日志级别为info，显示详细的调试信息
	utils.SetLogLevel("info")

	utils.Info("=============================")
	utils.Info("===== 商户基本信息查询示例 开始 =====")
	utils.Info("=============================")

	// 创建配置对象和查询服务
	config := demo.CreateDemoConfig()
	queryService := query2.NewQueryService(config)

	merchBaseInfoQueryDemo(queryService)

	utils.Info("=============================")
	utils.Info("===== 商户基本信息查询示例执行完毕 =====")
	utils.Info("=============================")
}
